﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{
    class Personagem : AnimatedObject
    {

        KeyboardState teclado;
        KeyboardState tecladoAntigo;
        MouseState mouse;
        MouseState mouseAntigo;

        

        float gravidade;
        float velocidadeY;

        Vector2 destino;
        double anguloRadiano;
        int velocidade;
        Boolean destinoAtingido;

        public Personagem(Texture2D texture, int Width, int Height)
            : base(texture, Width, Height) 
        {
            gravidade = 0.5f;
            velocidadeY = -10;

            AnimationStructure animationCorrendo = new AnimationStructure();
            animationCorrendo.frameCount = 12;
            animationCorrendo.frameWidth = Width;
            animationCorrendo.frameHeight = Height;
            animationCorrendo.framePerSecond = 12;
            animationCorrendo.X = 0;
            animationCorrendo.Y = 0;
            listaAnimations.Add("correndo", animationCorrendo);

            ChangeAnimation("default");

            destinoAtingido = true;
            velocidade = 5;
        }

        public override void Update(GameTime gameTime)
        {
            

            teclado = Keyboard.GetState();
            mouse = Mouse.GetState();

            if (mouse.LeftButton == ButtonState.Pressed)
            {
                destino = new Vector2(mouse.X, mouse.Y);

                anguloRadiano = Math.Atan2(destino.Y - posicao.Y, destino.X - posicao.X);
                destinoAtingido = false;
                ChangeAnimation("correndo");

            }

            if (destinoAtingido == false)
            {
                /*double distanciaX = destino.X - posicao.X;
                double distanciaY = destino.Y - posicao.Y;
                double distancia = Math.Sqrt((distanciaX * distanciaX) + (distanciaY * distanciaY));*/

                anguloRadiano = Math.Atan2(destino.Y - posicao.Y, destino.X - posicao.X);

                //if (distancia > velocidade)
                //{
                    posicao.X += (float)Math.Cos(anguloRadiano) * velocidade;
                    posicao.Y += (float)Math.Sin(anguloRadiano) * velocidade;
                /*}
                else
                {
                    posicao = destino;
                    destinoAtingido = true;

                    ChangeAnimation("default");
                }*/




                //Descobrir uma maneira de PARAR o objeto (totalmente não um pônei)
                //Quando este chegar ao destino

                

                
            }





            



            tecladoAntigo = teclado;
            mouseAntigo = mouse;




            base.Update(gameTime);
        }

    }
}
